//原始模式
// 优点：直观看到对象的属性和方法
// 缺点：处理多个类型 需要创建多个实例
var p = new Object()
p.name = 'sonia';
p.age = 13
p.action = function(){
    return this.name;
}



// 工厂模式
// 优点：解决了重复创建函数的问题
// 全部都是object 不能知道实例化对象
function person(name,age){
    var p = new Object();
    p.name = 'sonia';
    p.age = 18;
    p.action = function(){
        return this.name
    }
    return p;
}
var p1 = person('lili',18)
p1.name;
var p2 = person('cici',20)
p2.name

// 构造函数模式
function Person(name,age){
    this.name = name;
    this.age = age;
    this.action = function(){
        console.log(this.name)
    }
}

var p3 = new PersonX('abc',20)
var p4 = new PersonX('xyz',18)
console.log(p3 instanceof Person)

// 混合模式（原型和构造函数模式）
function Person(name,age){
    this.name = name;
    this.age = age;
}
PersonX.prototype.action = function(){
    console.log(this.name)
}

var p5 = new PersonX('abc',20)
var p6 = new PersonX('xyz',18)
console.log(p5 instanceof PersonX)

